www.gusucode.com > VC++ 酒店管理系统-源码程序 > VC++ 酒店管理系统-源码程序/code/hotel2003/InfoLookDialog.cpp
// InfoLookDialog.cpp : implementation file // Download by http://www.NewXing.com #include "stdafx.h" #include "qq.h" #include "InfoLookDialog.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define AW_CENTER 0x00000010 ///////////////////////////////////////////////////////////////////////////// // CInfoLookDialog dialog CInfoLookDialog::CInfoLookDialog(CWnd* pParent /*=NULL*/) : CDialog(CInfoLookDialog::IDD, pParent) { //{{AFX_DATA_INIT(CInfoLookDialog) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CInfoLookDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CInfoLookDialog) DDX_Control(pDX, IDC_EDIT_SHOWTEXT, m_EditTextShow); DDX_Control(pDX, IDC_LIST_CTRL_MODE,m_cTabListMode ); DDX_Control(pDX, IDC_LIST_CTRL, m_cListCtrl); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CInfoLookDialog, CDialog) //{{AFX_MSG_MAP(CInfoLookDialog) ON_NOTIFY(TCN_SELCHANGE, IDC_LIST_CTRL_MODE, OnSelchangeListCtrlMode) ON_NOTIFY(NM_CLICK, IDC_LIST_CTRL, OnClickListCtrl) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CInfoLookDialog message handlers BOOL CInfoLookDialog::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here // Initial extended style for the list control on this dialog /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 动态显示对话框 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ this->CenterWindow(); // HINSTANCE m_hInst=LoadLibrary("user32.dll"); // typedef BOOL(WINAPI* LPANIMATEWND)(HWND,DWORD,DWORD); // LPANIMATEWND m_aniwnd=(LPANIMATEWND)GetProcAddress(m_hInst,"AnimateWindow"); // m_aniwnd(this->GetSafeHwnd(),650,AW_CENTER); /*----------------------------------------------------------------*/ DWORD dwStyle = m_cListCtrl.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT; m_cListCtrl.SetExtendedStyle(dwStyle); m_cListCtrl.ModifyStyle(0, LVS_REPORT); // Setup the tab header InitTabCtrl(); // Setup the column headings SetListCtrlColsNames(0); // Create the image list that is attached to the list control InitImageList(); // Insert the default dummy items //set the edit text m_EditTextShow.SetWindowText(""); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CInfoLookDialog::InitTabCtrl() {//设置表头的名字 m_cTabListMode.InsertItem(0, _T("客人")); m_cTabListMode.InsertItem(1, _T("房间")); m_cTabListMode.InsertItem(2, _T("帐单")); m_cTabListMode.InsertItem(3, _T("服务")); m_cTabListMode.InsertItem(4, _T("食物")); m_cTabListMode.InsertItem(5, _T("职员")); } void CInfoLookDialog::SetListCtrlColsNames(int nTabMode) {//根据不同的表头设置不同的标题 // Insert some columns CRect rect; m_cListCtrl.GetClientRect(&rect); int nColInterval = rect.Width();//设置单位宽度 CHeaderCtrl* pHdr=m_cListCtrl.GetHeaderCtrl(); int n=pHdr->GetItemCount(); switch(nTabMode) { case 0/*客人模式*/: m_cListCtrl.InsertColumn(0,_T("HandCode"),LVCFMT_LEFT,nColInterval/6+30); m_cListCtrl.InsertColumn(1,_T("Name"),LVCFMT_LEFT,nColInterval/6+10); m_cListCtrl.InsertColumn(2,_T("GuestType"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(3,_T("Sex"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(4,_T("Certificate"),LVCFMT_LEFT,nColInterval/6+5); m_cListCtrl.InsertColumn(5,_T("CertifyCode"),LVCFMT_LEFT,nColInterval/6+10); m_cListCtrl.InsertColumn(6,_T("IsMember"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(7,_T("IsMaster"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(8,_T("GroupID"),LVCFMT_LEFT,nColInterval/6+5); m_cListCtrl.InsertColumn(9,_T("GuestNum"),LVCFMT_LEFT,nColInterval/6+5); m_cListCtrl.InsertColumn(10,_T("RoomNum"),LVCFMT_LEFT,nColInterval/6+5); m_cListCtrl.InsertColumn(11,_T("RoomCode"),LVCFMT_LEFT,nColInterval/6+5); break; case 1: m_cListCtrl.InsertColumn(0,_T("RoomCode"),LVCFMT_LEFT,nColInterval/3); m_cListCtrl.InsertColumn(1,_T("RoomType"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(2,_T("Floor"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(3,_T("Phone"),LVCFMT_LEFT,nColInterval/3); m_cListCtrl.InsertColumn(4,_T("RoomStatus"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(5,_T("PriceType"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(6,_T("Price"),LVCFMT_LEFT,nColInterval/6); break; case 2: m_cListCtrl.InsertColumn(0,_T("帐单码"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(1,_T("手牌号码"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(2,_T("总数"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(3,_T("实付数"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(4,_T("折扣率"),LVCFMT_LEFT,nColInterval/6); m_cListCtrl.InsertColumn(5,_T("是/否已付"),LVCFMT_LEFT,nColInterval/6); break; case 3: m_cListCtrl.InsertColumn(0,_T("服务名称"),LVCFMT_LEFT,nColInterval/2); m_cListCtrl.InsertColumn(1,_T("服务价格"),LVCFMT_LEFT,nColInterval/2); break; case 4: m_cListCtrl.InsertColumn(0,_T("食物名称"),LVCFMT_LEFT,nColInterval/2); m_cListCtrl.InsertColumn(1,_T("食物价格"),LVCFMT_LEFT,nColInterval/2); break; case 5: m_cListCtrl.InsertColumn(0,_T("员工编号"),LVCFMT_LEFT,nColInterval/3); m_cListCtrl.InsertColumn(1,_T("员工名字"),LVCFMT_LEFT,nColInterval/3); m_cListCtrl.InsertColumn(2,_T("所属部们"),LVCFMT_LEFT,nColInterval/3); break; } } void CInfoLookDialog::InitImageList() { // Create 256 color image lists HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 8, 1); m_cImageListNormal.Attach(hList); hList = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 8, 1); m_cImageListSmall.Attach(hList); // Load the large icons CBitmap cBmp; cBmp.LoadBitmap(IDB_IMAGES_NORMAL); m_cImageListNormal.Add(&cBmp, RGB(255,0, 255)); cBmp.DeleteObject(); // Load the small icons cBmp.LoadBitmap(IDB_IMAGES_SMALL); m_cImageListSmall.Add(&cBmp, RGB(255,0, 255)); // Attach them m_cListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL); m_cListCtrl.SetImageList(&m_cImageListSmall, LVSIL_SMALL); } void CInfoLookDialog::InsertItems(int nTab) {//插入全部子项目 //删除所有的项目 m_cListCtrl.DeleteAllItems();//清空 CString psztext[6][100][12]; int i=0,j=0,k=0; for(i=0;i<6;i++) { for(j=0;j<100;j++) { for(k=0;k<12;k++) { psztext[i][j][k]=m_Page1.pszText[i][j][k];//拷贝字符 } } } LVITEM lvi; //根据nTab的值画不同的项目表 switch(nTab) { case 0://客人 for(i=0;i<m_Page1.nTablesItems[0];i++) { //插入第一个头 lvi.mask = LVIF_IMAGE | LVIF_TEXT;; lvi.iItem = i; lvi.iSubItem = 0; lvi.pszText = psztext[0][i][0].GetBuffer(psztext[0][i][0].GetLength()); lvi.iImage = i%8; // There are 8 images in the image list m_cListCtrl.InsertItem(&lvi); for(j=1;j<12;j++) {//插入后面的项目 lvi.iSubItem =j; lvi.pszText = psztext[0][i][j].GetBuffer(psztext[0][i][j].GetLength()); m_cListCtrl.SetItem(&lvi); } } break; case 1://房间信息显示 for(i=0;i<m_Page1.nTablesItems[1];i++) { //插入第一个头 lvi.mask = LVIF_IMAGE | LVIF_TEXT; lvi.iItem = i; lvi.iSubItem = 0; lvi.pszText = psztext[1][i][0].GetBuffer(psztext[1][i][0].GetLength()); lvi.iImage = i%8; // There are 8 images in the image list m_cListCtrl.InsertItem(&lvi); for(j=1;j<7;j++) {//插入后面的项目 lvi.iSubItem =j; lvi.pszText = psztext[1][i][j].GetBuffer(psztext[1][i][j].GetLength()); m_cListCtrl.SetItem(&lvi); } } break; case 2://帐单 for(i=0;i<m_Page1.nTablesItems[2];i++) { //插入第一个头 lvi.mask =LVIF_IMAGE | LVIF_TEXT; lvi.iItem = i; lvi.iSubItem = 0; lvi.pszText = psztext[2][i][0].GetBuffer(psztext[2][i][0].GetLength()); lvi.iImage = i%8; // There are 8 images in the image list m_cListCtrl.InsertItem(&lvi); for(j=1;j<6;j++) {//插入后面的项目 lvi.iSubItem =j; lvi.pszText = psztext[2][i][j].GetBuffer(psztext[2][i][j].GetLength()); m_cListCtrl.SetItem(&lvi); } } break; case 3: for(i=0;i<m_Page1.nTablesItems[3];i++) { //插入第一个头 lvi.mask =LVIF_IMAGE | LVIF_TEXT; lvi.iItem = i; lvi.iSubItem = 0; lvi.pszText = psztext[3][i][0].GetBuffer(psztext[3][i][0].GetLength()); lvi.iImage = i%8; // There are 8 images in the image list m_cListCtrl.InsertItem(&lvi); for(j=1;j<2;j++) {//插入后面的项目 lvi.iSubItem =j; lvi.pszText = psztext[3][i][j].GetBuffer(psztext[3][i][j].GetLength()); m_cListCtrl.SetItem(&lvi); } } break; case 4: for(i=0;i<m_Page1.nTablesItems[4];i++) { //插入第一个头 lvi.mask =LVIF_IMAGE | LVIF_TEXT; lvi.iItem = i; lvi.iSubItem = 0; lvi.pszText = psztext[4][i][0].GetBuffer(psztext[4][i][0].GetLength()); lvi.iImage = i%8; // There are 8 images in the image list m_cListCtrl.InsertItem(&lvi); for(j=1;j<2;j++) {//插入后面的项目 lvi.iSubItem =j; lvi.pszText = psztext[4][i][j].GetBuffer(psztext[4][i][j].GetLength()); m_cListCtrl.SetItem(&lvi); } } break; case 5: for(i=0;i<m_Page1.nTablesItems[5];i++) { //插入第一个头 lvi.mask =LVIF_IMAGE | LVIF_TEXT; lvi.iItem = i; lvi.iSubItem = 0; lvi.pszText = psztext[5][i][0].GetBuffer(psztext[5][i][0].GetLength()); lvi.iImage = i%8; // There are 8 images in the image list m_cListCtrl.InsertItem(&lvi); for(j=1;j<3;j++) {//插入后面的项目 lvi.iSubItem =j; lvi.pszText =psztext[5][i][j].GetBuffer(psztext[5][i][j].GetLength()); m_cListCtrl.SetItem(&lvi); } } break; } } void CInfoLookDialog::OnSelchangeListCtrlMode(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here // Get the current data and don't redraw while we decide what to do. UpdateData(TRUE); m_cListCtrl.SetRedraw(FALSE); // Remove whatever style is there currently m_cListCtrl.ModifyStyle(0, LVS_REPORT); int i=0; // Switch the tab mode switch (m_cTabListMode.GetCurSel())//draw the listctrl there is a bug!!!! { case 0: // Guest SetListCtrlColsNames(0); InsertItems(0); break; case 1: // Room // ClearHeaderCtrl(); SetListCtrlColsNames(1); InsertItems(1); break; case 2: // Bill SetListCtrlColsNames(2); InsertItems(2); break; case 3: // Server // ClearHeaderCtrl(); SetListCtrlColsNames(3); InsertItems(3); break; case 4: // Food // ClearHeaderCtrl(); SetListCtrlColsNames(4); InsertItems(4); break; case 5: // Employer // ClearHeaderCtrl(); SetListCtrlColsNames(5); InsertItems(5); break; } // Fill the list control m_cListCtrl.SetRedraw(TRUE); *pResult = 0; } void CInfoLookDialog::OnOK() { // TODO: Add extra validation here CDialog::OnOK(); } void CInfoLookDialog::OnCancel() { // TODO: Add extra cleanup here // SendMessage(WM_COMMAND,WM_SETPOS,0); // m_Page1.m_CoolProgress.SetPos(0); CDialog::OnCancel(); } void CInfoLookDialog::OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult) {//选择了listctrl中的一个项目 // TODO: Add your control notification handler code here m_EditTextShow.SetWindowText("");//清空 CRect rect; m_EditTextShow.GetClientRect(&rect); POSITION pos=m_cListCtrl.GetFirstSelectedItemPosition(); while (pos) { int nSel=m_cListCtrl.GetNextSelectedItem(pos); CString str=_T(""); int nMode=m_cTabListMode.GetCurSel(); int i=0; //get the CHeaderCtrl pointer CHeaderCtrl* pHeader=(CHeaderCtrl*)m_cListCtrl.GetHeaderCtrl(); HDITEM Hditem; TCHAR lpBuffer[256]; Hditem.mask=HDI_TEXT; Hditem.pszText=lpBuffer; Hditem.cchTextMax=256; switch(nMode) { case 0://Guest for(i=0;i<12;i++) {//there is a bug! pHeader->GetItem(i,&Hditem);//get the header item str=lpBuffer; str+=":"; // str=str+":\t"+m_cListCtrl.GetItemText(nSel,i); m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect); } // m_EditTextShow.GetScrollBarCtrl(SB_VERT)->SetScrollPos(0,TRUE); // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE); // m_EditTextShow.ScrollWindow(0,-m_EditTextShow.GetScrollPos(SB_VERT),NULL,NULL); // m_EditTextShow.UpdateWindow(); break; case 1://Room for(i=0;i<7;i++) {//there is a bug!打印出来的结果排列不整齐 pHeader->GetItem(i,&Hditem);//get the header item str=lpBuffer; str+=":"; // str=str+":\t"+m_cListCtrl.GetItemText(nSel,i); m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect); } // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE); break; case 2://Bill for(i=0;i<6;i++) {//there is a bug! pHeader->GetItem(i,&Hditem);//get the header item str=lpBuffer; str+=":"; // str=str+":\t"+m_cListCtrl.GetItemText(nSel,i); m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect); } // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE); break; case 3://Server for(i=0;i<2;i++) {//there is a bug! pHeader->GetItem(i,&Hditem);//get the header item str=lpBuffer; str+=":"; // str=str+":\t"+m_cListCtrl.GetItemText(nSel,i); m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect); } // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE); break; case 4://Food for(i=0;i<2;i++) {//there is a bug! pHeader->GetItem(i,&Hditem);//get the header item str=lpBuffer; str+=":"; // str=str+":\t"+m_cListCtrl.GetItemText(nSel,i); m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect); } // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE); break; case 5://Employer for(i=0;i<3;i++) {//there is a bug! pHeader->GetItem(i,&Hditem);//get the header item str=lpBuffer; str+=":"; // str=str+":\t"+m_cListCtrl.GetItemText(nSel,i); m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect); } // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE); break; } } *pResult = 0; }